Computer and computer-related equipment commonly use bitmaps to represent textual characters. A bitmap is a two-dimensional array of bits or values corresponding to a similar two-dimensional array of pixels on a display or printed page. In a simple bitmap representing a character, a pixel or potential dot position is represented by a single bit. If the bit is equal to "1", a dot is to be printed or displayed in that pixel position. If the bit is equal to "0", no dot is to be printed or displayed in that pixel position--the position is left blank or printed with a background color.
When printing, it is possible for a computer to send actual bitmaps to a printer. In many cases, however, a printer will store one or more libraries of character bitmaps that can be used by the computer without downloading.
It is desirable to limit the amount of memory required to store the bitmaps in the printer. Accordingly, the bitmaps are often stored at a low pixel resolution (small number of pixels) compared to the higher resolution (higher number of pixels) at which they will be printed. Before printing a particular character, its bitmap must be enlarged to an appropriate size. Many printers allow characters to be scaled by a variable factor before printing.
Most enlargement schemes start with a one-to-one mapping of every pixel in a reference bitmap to a corresponding rectangular region or pixel array in an enlarged bitmap. If a dot is present at a particular pixel location in the reference bitmap, every pixel location in the corresponding rectangular region of the enlarged bitmap is filled in with dots.
While this scheme results in an accurate enlargement of the reference bitmap, it causes a degradation in perceived print quality. This is primarily because of diagonal edges in the bitmaps. Since each pixel of the reference bitmap is represented in the enlarged bitmap by a rectangular region of dots, diagonal edges appear to as a series of "stairsteps." In other words, diagonal edges are jagged rather than smooth.
Edge smoothing algorithms have been developed to improve the perceived print quality of enlarged character bitmaps. However, the effectiveness of these algorithms depends on the ability to detect the correct edges to smooth. This is especially important with ideographic characters like Chinese, Kanji, and Hanja.
Many edge smoothing algorithms are implemented in hardware with a method of mask comparison. Hardware implementations have the benefit of faster computational speed when compared to software implementations, but are not as portable to different character sets and fonts. Moreover, the results of mask comparison are highly dependent on the set of masks being employed in the edge detection process. The more cells in the masks, the more accurate the edge detection process. Hence, the tradeoff for an accurate edge smoothing process is often a loss in throughput.
It would be desirable to provide an edge smoothing method that achieves both high throughput and superior print quality, while conserving memory and other hardware resources.